;; 有理数/分数 表达和计算
(define (make-rat a b)
  (let ((g (gcd a b)))
    (if (< b 0)
        (cons (- (/ a g)) (- (/ b g)))
        (cons (/ a g) (/ b g)))))

;; 获取 分子/分母
(define (numer x) (car x))
(define (denom x) (cdr x))

;; 输出打印分数
(define (print-rat x)
  (display (numer x))
  (display "/")
  (display (denom x))
  (newline))

;; 最大公约数
(define (gcd a b)
  (if (= b 0)
      a
      (gcd b (remainder a b))))         ; remainder 取余
